package com.ruifu.doc.service;


import com.baomidou.mybatisplus.extension.api.R;
import com.fhzncloud.cloud.common.security.service.CloudUser;
import com.ruifu.common.vo.PageResultVO;
import com.ruifu.doc.dto.docc.DmDoccDTO;
import com.ruifu.doc.vo.docc.DmDoccVO;

import java.util.List;

/**
 * @author 宁义锐
 */
public interface DmDoccService {

    /**
     * 保存文档类型
     *
     * @param dmDoccDTO 文档类型传输对象
     * @return
     */
    void insert(DmDoccDTO dmDoccDTO, CloudUser cloudUser) throws Exception;

    /**
     * 根据文档类型Id修改文档类型
     *
     * @param dmDoccDTO 文档类型传输对象
     * @return
     */
    void updateById(DmDoccDTO dmDoccDTO, CloudUser cloudUser);

    /**
     * 批量删除
     *
     * @param dcDoccIds 文档类型Id数组
     * @return
     */
    void delete(Integer[] dcDoccIds, CloudUser cloudUser) throws Exception;

    /**
     * 根据文档Id进行删除
     *
     * @param dcDoccId 文档类型Id
     * @return
     */
    void deleteById(Integer dcDoccId, CloudUser cloudUser) throws Exception;

    /**
     * 根据Id查询文档类型
     *
     * @param dcDoccId 文档类型编号
     * @return
     */
    DmDoccVO findById(Integer dcDoccId);

    /**
     * 根据文档类型名称查询是否存在
     *
     * @param dcDoccCode 文档类型代号
     * @return
     */
    Boolean findByDcDoccCode(String dcDoccCode, CloudUser cloudUser);

    /**
     * 联合查询
     *
     * @param pageNum  当前页码
     * @param pageSize 每页大小
     * @param dmDoccDTO   文档类型对象
     * @return
     */
    PageResultVO findByQuery(int pageNum, int pageSize, DmDoccDTO dmDoccDTO, CloudUser cloudUser);

    /**
     * 查询文档类别类型
     *
     * @return
     */
    List<DmDoccVO> findAllDcDoccName(CloudUser cloudUser);

    /**
     * 获取文档类型代号
     * @return
     */
    String getDocTypeCode();

    /**
     * 新增默认文档类型
     * @param dcDoccId
     * @param cloudUser
     * @return
     */
    R insertDefaultType(Integer dcDoccId,CloudUser cloudUser);

    /**
     * 取消默认文档类型
     * @param dcDoccId
     * @param cloudUser
     * @return
     */
    R updateDefaultType(Integer dcDoccId, CloudUser cloudUser);
}
